从现在开始,我们进入到 Python 正式的学习课程。本课程使用 Jupyter Notebook 格式撰写,推荐你也安装 jupyter notebook 或者通过安装 anaconda 来使用。
我们通过简单的描述和举例来进行 Python 编程开发的讲解,需要你自己运行 notebook 里面的代码,并且最好建议自己输入一遍代码去运行,看看是否得到了预料中的结果,不要怕发生错误,发生错误后,首先检查一下代码输入是否正确,有时候也可以在 jupyter 菜单上找到 Kernel-Restart,重启 jupyter 来解决问题。
我们并不想像标准的编程书籍和教材一样,去系统的讲解很多基本概念,一方面可能有些朋友已经学习过一些电脑编程语言,很多概念都是相通的,另一方面很多基本概念的学习其实是一件比较枯燥的事情,会让我们失去一些学习的兴趣。因此我们尽量用实战来代替,通过例子和自己操作来掌握 Python 的语法,掌握编程的一些理念。或许会碰到搞不懂的一些问题,就先记住怎么操作即可,通过输入代码联系、作业、思考、自己动手编程等方式来学习。
变量用来在程序中存储内容。变量是编程开发中最基本的概念。
Python 中的变量赋值不需要类型声明。
每个变量在内存中创建,都包括变量的标识,名称和数据这些信息, 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建, 等号= 用来给变量赋值, 等号= 左边是一个变量名,等号右边是存储在变量中的值。
In [ ]:
counter = 100 # 整型变量
miles = 1000.0 # 浮点型(小数)
name = "John" # 字符串
name2 = 'Tom'
# 显示指定变量名的内容
print(name2)
In [1]:
flag = False # 布尔值
#显示变量的类型
print(type(flag))
In [3]:
# 多个变量赋值, Python 的写法比较简洁
a = b = c = 1
b = 2
print(a,b,c)
In [2]:
# 字符串变量赋值
s = s1 = 'Hello'
print(s,s1)
In [41]:
# 多个变量赋值
a, b, c = 1, 2, 3
print(a,b,c)
In [42]:
# 交换变量
a, b = 1, 2
a, b = b, a
print(a,b)
In [1]:
# 定义一个整数变量
a = 1
print(a)
print(type(a))
# 变成字符串变量
a = 's'
print(a)
print(type(a))
In [4]:
# 改变变量的内容
a = 'ABC'
b = a
a = 'XYZ'
print(b)
In [5]:
# 用 id() 可以得到变量的内存地址
print(id(a))
print(id(b))
In [6]:
# 指向同一个变量内容的变量内存地址其实是一样的
# 注意id(100)的地址和a 的地址是一样的
a = 100
b = 101
print(id(a))
print(id(b))
print(id(100))
In [7]:
# 变量内容发生变化后,内存地址会发生变化
b = b + 1
print(id(a))
print(id(b))
In [8]:
# 指向同一个变量内容的变量内存地址这里又不一样了
a = 300
b = 300
print(id(a))
print(id(b))
Python 有一些很优雅的设计,来提升性能,对于0-255这些常用的数字,Python 内部是有缓存的。
In [9]:
# 输出数字和变量内容
print(100)
a = 100
print(a)
In [ ]:
# 先通过输入内容到变量,然后再输出
name = input('name:')
print( 'hello', name)
下面的例子引入条件判断语句,if 语句。Python 中 if 语句很容易理解,注意条件后面的冒号不要忘记,还有缩进格式。
Python 官方目前有写得不错的中文文档,可以学习。 https://docs.python.org/zh-cn/3/tutorial/controlflow.html#if-statements
In [ ]:
# 根据变量a 的值来判断
a = 10
if a > 10:
print('big')
else:
print('small')
In [ ]:
for i in range(13):
print(i)
下面的例子引入循环语句 for,后面还会详细解释,这里先有个印象即可。
In [ ]:
for i in 'hello':
print(i)
In [ ]:
# 支持格式化的 print
s = 'hello'
x = len(s)
print('The length of %s is %d' % (s,x))
In [ ]:
# 更加好,更加 pythonic 的写法:format函数-增强的格式化字符串函数
# 关于format的更多细节,参见 https://docs.python.org/zh-cn/3/library/string.html#format-string-syntax
# 通过关键字传参
print('{greet} from {language}'.format(greet='hello', language='English'))
# 通过位置传参
print('{0} from {1}'.format('hello', 'English'))
In [ ]:
# 支持格式化的 print 的另外一种写法
s = 'hello'
x = len(s)
print('The length of {word} is {length}'.format(word=s,length=x))
print() 格式化输出说明
%字符:标记转换说明符的开始
转换标志:-表示左对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充。
最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。
点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将从元组中读出。
字符串格式化转换类型。
转换类型 含义
In [ ]:
# 格式化 print 举例
pi = 3.141592653
print('%10.3f' % pi) #字段宽10,精度3
print("pi = %.*f" % (3,pi)) #用*从后面的元组中读取字段宽度或精度
print('%010.3f' % pi) #用0填充空白
print('%-10.3f' % pi) #左对齐
print('%+f' % pi) #显示正则表达式
Python 从3.6版本开始引入 f-string,称为格式化字符串常量,主要目的是使格式化字符串的操作更加简便。f-string在形式上是以 f 或 F 修饰符引领的字符串(f'xxx' 或 F'xxx'),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。
f-string 在功能方面不逊于传统的 %-formatting语句和 str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于 Python3.6及以后的版本,推荐使用f-string进行字符串格式化。
In [ ]:
a = 3.141592653
f'a is {a:10.3f}'